- name: push packages out
  hosts: notifs_backend:notifs_backend_stg:notifs_web:notifs_web_stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  vars:
    testing: False
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"

  tasks:
  - name: clean all metadata {%if testing%}(with infrastructure-testing on){%endif%}
    command: yum clean all
    check_mode: no
  - name: yum update FMN packages from main repo
    package: name="python-fmn" state=latest

- name: verify the frontend and stop it
  hosts: notifs_web:notifs_web_stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"

  pre_tasks:
  - name: tell nagios to shush w.r.t. the frontend
    nagios: action=downtime minutes=15 service=host host={{ inventory_hostname_short }}{{ env_suffix }}
    delegate_to: noc01.iad2.fedoraproject.org
    ignore_errors: true

  roles:
  - notifs/frontend

  post_tasks:
  - service: name="httpd" state=stopped

- name: verify the backend, stop it, and then upgrade the db
  hosts: notifs_backend:notifs_backend_stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"

  pre_tasks:
  - name: tell nagios to shush w.r.t. the backend
    nagios: action=downtime minutes=5 service=host host={{ inventory_hostname_short }}{{ env_suffix }}
    delegate_to: noc01.iad2.fedoraproject.org
    ignore_errors: true

  roles:
  - notifs/backend
  - fedmsg/base
  - fedmsg/hub

  tasks:
  - name: Stop the notification backend
    service: name="fedmsg-hub" state=stopped

  - name: Stop the workers and backends
    service: name={{ item }} state=stopped
    with_items:
    - fmn-backend@1
    - fmn-worker@1
    - fmn-worker@2
    - fmn-worker@3
    - fmn-worker@4
    - fmn-worker@5
    - fmn-worker@6
    - fmn-celerybeat

  - name: Upgrade the database
    command: /usr/bin/alembic -c /usr/share/fmn/alembic.ini upgrade head
    args:
      chdir: /usr/share/fmn/

  - name: Re-start the workers and the backend
    service: name={{ item }} state=started
    with_items:
    - fmn-backend@1
    - fmn-worker@1
    - fmn-worker@2
    - fmn-worker@3
    - fmn-worker@4
    - fmn-worker@5
    - fmn-worker@6
    - fmn-celerybeat

  - name: And... start the backend again
    service: name="fedmsg-hub" state=started

  # Don't bother unshushing the backend here.  it takes a few minutes to start
  # up anyways, so just let the downtime expire.
  #post_tasks:
  #- name: tell nagios to unshush w.r.t. the backend
  #  nagios: action=unsilence service=host host={{ inventory_hostname_short }}{{ env_suffix }}
  #  delegate_to: noc01.iad2.fedoraproject.org
  #  ignore_errors: true

- name: restart the frontend
  hosts: notifs_web:notifs_web_stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"

  tasks:
  - service: name="httpd" state=started

  post_tasks:
  - name: tell nagios to unshush w.r.t. the frontend
    nagios: action=unsilence service=host host={{ inventory_hostname_short }}{{ env_suffix }}
    delegate_to: noc01.iad2.fedoraproject.org
    ignore_errors: true
